package com.huawang.mdesign.model.service.constant;

import com.huawang.core.definition.mof.UMLDefinitionConstants;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class SyncRuleProperty {

    private SyncRuleProperty() {
        throw new IllegalStateException("Utility class");
    }

    // 特殊处理过的属性，允许用户选择
    public static final List<String> SPECIAL_HANDLE_PROPERTY = Stream.of(
            UMLDefinitionConstants.Property_defaultValue,
            UMLDefinitionConstants.NamedElement_allocatedTo,
            UMLDefinitionConstants.NamedElement_allocatedFrom,
            UMLDefinitionConstants.NamedElement_refines,
            UMLDefinitionConstants.NamedElement_satisfies,
            UMLDefinitionConstants.NamedElement_verifies,
            UMLDefinitionConstants.SysML_AbstractRequirement_derived,
            UMLDefinitionConstants.SysML_AbstractRequirement_derivedFrom,
            UMLDefinitionConstants.SysML_AbstractRequirement_master,
            UMLDefinitionConstants.SysML_AbstractRequirement_refinedBy,
            UMLDefinitionConstants.SysML_AbstractRequirement_satisfiedBy,
            UMLDefinitionConstants.SysML_AbstractRequirement_tracedTo,
            UMLDefinitionConstants.SysML_AbstractRequirement_verifiedBy
    ).collect(Collectors.toList());

    // 语法/业务均符合要求，但产品测试认为同步会产生歧义的属性
    public static final List<String> FILTER_PROPERTY = Stream.of(
            UMLDefinitionConstants.Vertex_incoming,
            UMLDefinitionConstants.Vertex_outgoing,
            //过滤需求编号属性
            UMLDefinitionConstants.SysML_AbstractRequirement_reqNo
    ).collect(Collectors.toList());
}
